(function () {
	Model.extend("nameModel",{
		firstName:Model.type.String(),
		lastName:Model.type.String(),
		fullName:Model.type.String(["firstName","lastName"])//声明逻辑依赖，来自Controller层的逻辑分离
	});
	/*
	生成的数据结构为单层hash结构：
	{
		"firstName":{
			value:"",
			type:String,
			lead:["fullname"],
			follow:[]
		}，
		"lastName":{
			value:"",
			type:String,
			lead:["lastName"],
			follow:[]
		}，
		"fullName":{
			value:"",
			type:String,
			lead:[],
			follow:["fullname","lastName"]
		}
	}
	如果不对数据结构进行初始化，则应定义为：
	Model.extend("nameModel",Model.type.Object());//Object类型的数据会动态进行拓展解析
	*/

	var nameController = Controller.extend("nameController",["nameModel"],function(collector_1){//多个Model时，同名之间采用就近原则
		collector_1.fullName = {//继承了 重写的toString和valueOf 保证统一的访问方式
			get:function(){
				return this.get("firstName")+" "+this.get("lastName");
			}
			set:function(value){
				var name = value.split(" ");
				this.set("firstName",name[0]);
				this.get("lastName",name[name.length-1]);
			}
		}
	},function(viewModel){//这里概念上不允许异步操作数据，仅仅用于Formatting data
		viewModel.fullName = '<h3>'+viewModel.fullName+'</h3>';
		//如果强硬需要异步的数据格式化，则需呀使用强制重绘API
		//这是个巨大的DOM开销
		//nameController.redraw();
	});
	/*
	collector_1 是一个和nameModel相关的采集器
	在Controller层中进行逻辑层定义，通过collector_1进行逻辑采集关于nameModel的数据关系，然后与 Model.create("nameModel") 出来的一个实例对象进行合并。
	所返回的nameController是一个控制器（Controller），这是用户唯一所需要在意的。
	数据的控制都通过Controller来实现，由Controller来通知数据库更新数据。数据库自动调取所有所有控制器实例以及相应的关系进行触发
	
	viewModel 是一个和view视图相关的采集器
	viewModel已经是多个Model的集合体，和收集器不一样
	并不与数据层同步，只是作为一个Model到View之间的适配处理
	
	当用Controller进行数据操作时：
	nameController.set("firstName","Gaubee");//Controller自身并不保存任何数据
	--> nameController.__private__.getModelName("firstName") --(Array)modelName--> Model.set(modelName,"firstName","Gaubee");
	--> Model.getControllers(modelName) --(Array)controllers--> forEach(controllers,function(ctl){ctl.trigger("firstName");} );//触发所有关于firstName的事件
	--(tigger)--> forEach( ctl.events["firstName"] , function(fn){fn.call(ctl);} );//触发相关的get函数，同时将DOM渲染事件注册到异步队列，而后 Formatting data，DOM的渲染会紧接在其后发生

	*/



}())